package windbell.domain.risk;

import edu.fudan.langlab.domain.task.TSKRoutineProtocal;
import edu.fudan.langlab.domain.task.TSKRoutineTaskGenerator;
import edu.fudan.mylang.pf.EntityImplementation;
import java.util.Collection;
import java.util.Date;
import windbell.domain.risk.IHaveCheckTargets;
import windbell.domain.risk.RiskCheckGeneratorStatus;
import windbell.domain.risk.RiskCheckTarget;
import windbell.domain.risk.RiskCheckTemplate;
import windbell.domain.risk.impl.RiskCheckGeneratorImpl;
import windbell.domain.risk.proxy.RiskCheckGeneratorProxy;

@EntityImplementation(implementBy = RiskCheckGeneratorImpl.class)
public interface RiskCheckGenerator extends TSKRoutineTaskGenerator, IHaveCheckTargets {
  public abstract RiskCheckTemplate getCheckTemplate();
  
  public abstract RiskCheckGenerator setCheckTemplate(final RiskCheckTemplate checkTemplate);
  
  public abstract TSKRoutineProtocal getProtocal();
  
  public abstract RiskCheckGenerator setProtocal(final TSKRoutineProtocal protocal);
  
  public abstract Collection<RiskCheckTarget> getCheckTargets();
  
  public abstract RiskCheckGenerator addtoCheckTargets(final RiskCheckTarget riskCheckTarget);
  
  public abstract RiskCheckGenerator setCheckTargets(final Iterable<RiskCheckTarget> checkTargets);
  
  public abstract RiskCheckGenerator removeFromCheckTargets(final RiskCheckTarget riskCheckTarget);
  
  public abstract RiskCheckGenerator removeAllCheckTargets();
  
  public abstract String getDescription();
  
  public abstract RiskCheckGeneratorStatus getStatus();
  
  public abstract void start();
  
  public abstract void delete();
  
  public abstract void addCheckTarget(final RiskCheckTarget item);
  
  public abstract void generateTask(final Date date);
  
  public abstract Boolean isCreated();
  
  public abstract Boolean isGenerated();
  
  public abstract RiskCheckGeneratorProxy toProxy();
}
